package com.cenntro.oss.service;

import java.util.List;

import com.cenntro.common.base.BaseService;
import com.cenntro.common.util.result.Result;
import com.cenntro.oss.model.dbo.DevCarDO;
import com.cenntro.oss.model.dbo.DevDeviceOnlineDO;
import com.cenntro.oss.model.dbo.DevDeviceStaticDO;
import com.cenntro.oss.model.dbo.SysAgentDO;
import com.cenntro.oss.model.qo.DevListQO;
import com.cenntro.oss.model.qo.DeviceCarListMapQO;
import com.cenntro.oss.model.qo.DeviceListQO;
import com.cenntro.oss.model.vo.DeivceDetailsVO;
import com.cenntro.oss.model.vo.DeivceListVO;
import com.cenntro.oss.model.vo.DeviceCarListMapVO;
import com.cenntro.oss.model.vo.DeviceDataCountVO;
import com.cenntro.oss.model.vo.DeviceDetailsVO;
import com.cenntro.oss.model.vo.DeviceListVO;
import com.cenntro.oss.model.vo.DeviceStaticVO;
import com.cenntro.oss.model.vo.VehicleDetailVO;

/**
 * <p>
 * 车辆配置信息，静态数据表 服务类
 * </p>
 *
 * @author 
 * @since 2018-09-13
 */
public interface DevDeviceStaticService extends BaseService {

	/**
	 * 转换VehicleDetailVO
	 * @param list
	 * @param dodList
	 * @param devcarList
	 * @param agentList
	 * @return
	 */
	List<VehicleDetailVO> translate(List<DevDeviceStaticDO> list, List<DevDeviceOnlineDO> dodList, List<DevCarDO> devcarList, List<SysAgentDO> agentList);
		
	/**
	 * 车辆指派
	 * @param ids 车辆id
	 * @param agentId 客户id
	 * @return
	 */
	Result assign(List<Integer> ids, Integer agentId);

	/**
	 * 连表查询车辆信息
	 * @param vehicle 
	 * @return
	 */
	List<DeivceListVO> staticAndOnlineAndCarList(DeviceListQO vehicle);

//	/**
//	 * 连表查询车辆总数
//	 * @param vehicle 
//	 * @return
//	 */
//	int staticAndOnlineAndCarCount(DeviceListQO vehicle);

	/**
	 * 查询车辆详情
	 * @param devId
	 * @return
	 */
	DeivceDetailsVO devDetail(Integer devId);

    /**
     * 查询库存车辆，未分配车辆status = 1
     * @param qo
     * @return
     */
    List<VehicleDetailVO> selectListByUnAllot(DeviceListQO qo);
    
    /**
     * 车辆指派
     * @param ids 车辆id
     * @param agentId 客户id
     * @return
     */
    Result assign(DeviceStaticVO deviceStaticVO);
    
    
    /**
     * 查询车辆列表
     * 
     * @param agentPath
     * @param key
     *            车牌号或者车架号
     * @param deviceStatus
     * 
     * @param qo
     * @return
     */
    List<DeviceListVO> selectList(DevListQO qo);
    
    /**
     * 查询车辆数
     * @param qo
     * @return
     */
    int selectCountList(DevListQO qo);

//    /**
//     * 通过devId查询车辆详情
//     * 
//     * @param devId
//     * @return
//     */
//    DeviceDetailsVO details(Integer devId);

    /**
     * 查询供应商下所有状态的车辆数
     * 
     * @param agentPath
     * @return
     */
    DeviceDataCountVO dataCount(String agentPath);


    DevDeviceStaticDO selectByDriverId(Integer driverId);

    /**
     * 车辆列表（地图筛选）
     * @param qo
     * @return
     */
    List<DeviceCarListMapVO> showCarList(DeviceCarListMapQO qo);
    
    /**
     * 列表总数
     * @param qo
     * @return
     */
    int countCarList(DeviceCarListMapQO qo);

//  /**
//   * 查询轨迹
//   * @param qo
//   * @return
//   */
//  List<DeviceTrackVO> selectTrack(DeviceTrackQO qo);

//    /**
//     * 开锁
//     * @param devId
//     * @param lat
//     * @param lng
//     * @return
//     */
//    Result open(Integer devId, String lat, String lng);
//
//    /**
//     * 锁门
//     * @param devId
//     * @return
//     */
//    Result close(Integer devId);


}
